package dletc.List;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 数组转集合：
 * 
 *      数组转为集合，只能转为List集合,不可以间接转为Set集合。
 *      
 *      为什么不能转为Set集合：
 *        因为数组可以出现重复数据，而set集合是不允许出现重复数据的的，也不是有序的。
 *        所以不能转
 */
public class Demo05 {

	public static void main(String[] args) {
		
		String[] strs = {"AA","BB","CC","DD","EE"};
		
		List<String> list = Arrays.asList(strs);
		
		System.out.println(list);
		
		//修改list集合中的数据
		list.set(0, "AAAA");
		System.out.println(list);
		
		//当集合被改变之后数组也会跟着发生变化
		System.out.println(Arrays.toString(strs));
		
		/**
		 *  数组转成的集合与数组是绑定到一起的，集合改变数据就要改变。
		 *  
		 *  数组转为的集合，不能添加新元素，为什么？
		 *  
		 *  因为改变集合就要改变数组的长度，而数组的长度是不允许改变的是固定
		 *  两者冲突会报异常
		 *  
		 */
		//给集合中添加数据
		list.add("FF"); //UnsupportedOperationException
		System.out.println(list);
		
		/**
		 *  就想要在集合中添加数据，报异常怎么办？
		 *  
		 *  原理：新建一个集合，把数组转出来的集合存入新集合，给新集合添加数据
		 *  
		 *  复制构造器的功能：
		 *  
		 *  所有的集合中都提供了一个构造方法： 参数可以是一个Collection类型的数据
		 *  
		 */
		
		  List<String> list3 = new ArrayList<String>(list); 
		  list3.add("FF");
		  System.out.println(list3);
		
		
		

	}

}
